package com.beadwallet.alarm.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author xingx
 * @date 2018/4/19
 */
public class IdCardGetAgeSexUtil {
    /**
     * 根据身份证的号码算出当前身份证持有者的性别和年龄 18位身份证
     * String idCard   身份证号
     * @return
     * @throws Exception
     */
    public static Map<String, Object> getIDInfoEightween(String idCard)
            throws Exception {
        Map<String, Object> map = new HashMap<>(16);
        // 得到年份
        String year = idCard.substring(6).substring(0, 4);
        // 得到月份
        String month = idCard.substring(10).substring(0, 2);
        //得到日
        // String day=idCard.substring(12).substring(0,2);
        String sex;
        // 判断性别
        if (Integer.parseInt(idCard.substring(16).substring(0, 1)) % 2 == 0) {
            sex = "女";
        } else {
            sex = "男";
        }
        // 得到当前的系统时间
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        // 当前年份
        String currentYear = format.format(date).substring(0, 4);
        // 月份
        String currentMonth = format.format(date).substring(5, 7);
        // String currentDay=format.format(date).substring(8,10);
        int age;
        // 当前月份大于用户出身的月份表示已过生
        if (Integer.parseInt(month) <= Integer.parseInt(currentMonth)) {
            age = Integer.parseInt(currentYear) - Integer.parseInt(year) + 1;
            // 当前用户还没过生
        } else {
            age = Integer.parseInt(currentYear) - Integer.parseInt(year);
        }
        map.put("sex", sex);
        map.put("age", age);
        return map;
    }

    /**
     * 15位身份证的验证
     * String idCard  身份证号
     * @param
     * @throws Exception
     */
    public static Map<String, Object> getIDInfoFiftween(String idCard)
            throws Exception {
        Map<String, Object> map = new HashMap<>(16);
        // 年份
        String year = "19" + idCard.substring(6, 8);
        // 月份
        String month = idCard.substring(8, 10);
        //日
        // String uday=idCard.substring(10, 12);
        // 用户的性别
        String usex = idCard.substring(14, 15);
        String sex;
        if (Integer.parseInt(usex) % 2 == 0) {
            sex = "女";
        } else {
            sex = "男";
        }
        // 得到当前的系统时间
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        // 当前年份
        String currentYear = format.format(date).substring(0, 4);
        // 月份
        String currentMonth = format.format(date).substring(5, 7);
        // String currentDay=format.format(date).substring(8,10);
        int age;
        // 当前月份大于用户出身的月份表示已过生
        if (Integer.parseInt(month) <= Integer.parseInt(currentMonth)) {
            age = Integer.parseInt(currentYear) - Integer.parseInt(year) + 1;
        } else {// 当前用户还没过生
            age = Integer.parseInt(currentYear) - Integer.parseInt(year);
        }
        map.put("sex", sex);
        map.put("age", age);
        return map;
    }
}
